package model

import (
	"time"
)

// Document 文档数据结构
type Document struct {
	ID        string    `json:"id"`
	Name      string    `json:"name"`      // 添加Name字段
	Title     string    `json:"title"`
	Content   string    `json:"content"`
	CreatedAt time.Time `json:"created_at"`
	UpdatedAt time.Time `json:"updated_at"`
	Tags      []string  `json:"tags"`
	FolderID  string    `json:"folder_id"`
	Size      int64     `json:"size"`
	Type      string    `json:"type"` // markdown, text
}

// Folder 文件夹数据结构
type Folder struct {
	ID        string    `json:"id"`
	Name      string    `json:"name"`
	ParentID  string    `json:"parent_id"`
	CreatedAt time.Time `json:"created_at"`
	UpdatedAt time.Time `json:"updated_at"`
	Path      string    `json:"path"`
}

// FileInfo 文件信息结构
type FileInfo struct {
	ID       string `json:"id"`
	Name     string `json:"name"`
	Type     string `json:"type"` // file, folder
	Size     int64  `json:"size"`
	Modified string `json:"modified"`
	Path     string `json:"path"`
}

// ExportRequest 导出请求结构
type ExportRequest struct {
	DocumentID string            `json:"document_id,omitempty"` // 可选，用于从数据库获取文档
	Content    string            `json:"content,omitempty"`     // 可选，直接传递内容
	Format     string            `json:"format"`                // pdf, docx, html
	Filename   string            `json:"filename,omitempty"`    // 添加Filename字段
	Settings   map[string]interface{} `json:"settings"`
	ImageSettings map[string]interface{} `json:"imageSettings,omitempty"`
	ExportOptions map[string]interface{} `json:"exportOptions,omitempty"`
}

// RenderRequest 渲染请求结构
type RenderRequest struct {
	Type     string            `json:"type"`     // mermaid, plantuml
	Content  string            `json:"content"`
	Settings map[string]interface{} `json:"settings"`
}

// BatchRenderRequest 批量渲染请求结构
type BatchRenderRequest struct {
	Items []map[string]interface{} `json:"items"`
}

// Config 系统配置结构
type Config struct {
	PlantUMLServer    string `json:"plantuml_server"`
	AutoSaveInterval  int    `json:"auto_save_interval"`
	DefaultTheme      string `json:"default_theme"`
	MathRenderer      string `json:"math_renderer"`
	MaxFileSize       int64  `json:"max_file_size"`
	EnableAutoSave    bool   `json:"enable_auto_save"`
}

// APIResponse 统一API响应结构
type APIResponse struct {
	Success bool        `json:"success"`
	Code    int         `json:"code"`
	Message string      `json:"message"`
	Data    interface{} `json:"data,omitempty"`
}

// ErrorResponse 错误响应结构
type ErrorResponse struct {
	Error   string `json:"error"`
	Code    int    `json:"code"`
	Message string `json:"message"`
	Details string `json:"details,omitempty"`
}